package com.qa.util;

import java.security.MessageDigest;
import java.util.Date;

import com.qa.pojo.AppSecretInfo;
import com.qa.pojo.qpy_configinfo;

public class CheckSumBuilder {
	public static String getCheckSum(String appSecret, String nonce,
			String curTime) {
		return encode("sha1", appSecret + nonce + curTime);
	}

	private static String encode(String algorithm, String value) {
		if (value == null) {
			return null;
		}
		try {
			MessageDigest messageDigest = MessageDigest.getInstance(algorithm);
			messageDigest.update(value.getBytes());
			return getFormattedText(messageDigest.digest());
		} catch (Exception e) {
			throw new RuntimeException(e);
		}
	}

	private static String getFormattedText(byte[] bytes) {
		int len = bytes.length;
		StringBuilder buf = new StringBuilder(len * 2);
		for (int j = 0; j < len; j++) {
			buf.append(HEX_DIGITS[(bytes[j] >> 4) & 0x0f]);
			buf.append(HEX_DIGITS[bytes[j] & 0x0f]);
		}
		return buf.toString();
	}

	private static final char[] HEX_DIGITS = { '0', '1', '2', '3', '4', '5',
			'6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };

	public static AppSecretInfo getSecretInfo(qpy_configinfo qpyConfiginfos) {
		String appKey = qpyConfiginfos.getAppkey();
		String appSecret = qpyConfiginfos.getAppsecret();
		String nonce = "1";
		String curTime = String.valueOf((new Date()).getTime() / 1000L);
		String checkSum = getCheckSum(appSecret, nonce, curTime);// 参考
																	// 计算CheckSum的java代码
		AppSecretInfo appSecretInfo = new AppSecretInfo();
		appSecretInfo.setAppKey(appKey);
		appSecretInfo.setNonce(nonce);
		appSecretInfo.setCurTime(curTime);
		appSecretInfo.setCheckSum(checkSum);
		return appSecretInfo;
	}
}